home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 111 / PC Guia 111.iso / Software / Utils / NetObjects Fusion 7.0 / NOF7Trial.exe / data1.cab / Program_Executable_Files / NetObjects_System / rollover.js < prev    next >
Text File  |  2002-06-12  |  5KB  |  226 lines

  1. // Handles rollover images for NN3+ and IE4+
  2. var loaded = new Array();
  3. var F_menuIsEntered = false;
  4. var F_menuIsCreated = false;
  5. var F_menuAgt = navigator.userAgent.toLowerCase();
  6. var F_menuIsGecko = (F_menuAgt.indexOf('gecko') != -1);
  7. var F_menuIsOpera = (F_menuAgt.indexOf('opera') != -1);
  8. var F_menuSubmenu;
  9. var F_menuTable = new Array();
  10.  
  11. function F_loadRollover(image,imageName,menu) {
  12.     if (image && image.src &&
  13.         (null == image.out || typeof(image.out) == typeof(void(0)))) {
  14.         s = image.src;
  15.         image.out = new Image();
  16.         image.out.src = s;
  17.         image.over = new Image();
  18.         if (imageName.lastIndexOf('/') >= 0 || imageName.lastIndexOf('\\') >= 0) {
  19.             s = imageName;
  20.         } else {
  21.             i = s.lastIndexOf('/');
  22.             if (i<0) i = s.lastIndexOf('\\');
  23.             if (i<0) { s = imageName; }
  24.             else     { s = s.substring(0,i+1) + imageName; }
  25.         }
  26.         image.over.src = s;
  27.         image.menu = menu;
  28.         loaded[image.name] = image;
  29.     }
  30. }
  31. function F_roll(imageName,over) {
  32.     if (document.images) {
  33.     if (over) { imageObject = "over"; }
  34.     else      { imageObject = "out"; }
  35.     image = loaded[imageName];
  36.     if (image) {
  37.         ref = eval("image."+imageObject);
  38.         if (ref) image.src = eval("image."+imageObject+".src");
  39.         else image.src = '';
  40.  
  41.         ref = eval("image.menu");
  42.         if (ref)
  43.         {
  44.             if (over)
  45.                 F_menuOpen(image, image.menu);
  46.             else
  47.                 F_menuClose();
  48.         }
  49.     }
  50.     if (window.event)
  51.         window.event.cancelBubble = true;
  52.     }
  53. }
  54.  
  55. function F_menufindLeft(b)
  56. {
  57.   v = b.offsetLeft;
  58.   if (b.offsetParent)
  59.      v += F_menufindLeft(b.offsetParent);
  60.   return v;
  61. }
  62.  
  63. function F_menufindTop(b)
  64. {
  65.   v = b.offsetTop;
  66.   if (b.offsetParent)
  67.      v += F_menufindTop(b.offsetParent);
  68.   return v;
  69. }
  70.  
  71. function F_menuOpen(o, a)
  72. {
  73.     var menu;
  74.  
  75.     if (F_menuIsGecko)
  76.         menu = document.getElementById(a[1] + 'LYR');
  77.     else if (document.layers)
  78.         menu = document.layers[a[1] + 'LYR'];
  79.     else
  80.         menu = eval(a[1] + 'LYR');
  81.     
  82.     if (F_menuSubmenu)
  83.     {
  84.         if (F_menuSubmenu != menu)
  85.         {
  86.             if (document.layers)
  87.                 F_menuSubmenu.visibility = 'hidden';
  88.             else
  89.                 F_menuSubmenu.style.visibility = 'hidden';
  90.         }
  91.         else
  92.         {
  93.             F_menuIsCreated = true;
  94.             return;
  95.         }
  96.     }
  97.  
  98.     F_menuSubmenu = menu;
  99.  
  100.     var horizontal = a[2];
  101.  
  102.     if (document.layers)
  103.     {
  104.         F_menuSubmenu.document.open();
  105.         F_menuSubmenu.document.write(F_menuTable[a[1]]);
  106.         F_menuSubmenu.document.close();
  107.         F_menuSubmenu.top = document.layers[o.name].pageY + (horizontal ? a[0] : 0);
  108.         F_menuSubmenu.left = document.layers[o.name].pageX + (horizontal ? 0 : a[0]);
  109.         F_menuSubmenu.visibility = 'visible';
  110.     }
  111.     else
  112.     {
  113.         var menutop = F_menufindTop(o);
  114.         var menuleft = F_menufindLeft(o);
  115.  
  116.         if (horizontal)
  117.             menutop += a[0];
  118.         else
  119.             menuleft += a[0];
  120.  
  121.         F_menuSubmenu.style.top=menutop;
  122.         F_menuSubmenu.style.left=menuleft;
  123.         F_menuSubmenu.style.visibility = 'visible';
  124.     }
  125.  
  126.     F_menuIsCreated = true;
  127. }
  128.  
  129. function F_menuClose()
  130. {
  131.     F_menuIsCreated = false;
  132.     setTimeout('F_checkMenuClose()', 100);
  133. }
  134.  
  135. function F_checkMenuClose()
  136. {
  137.     if (!F_menuIsEntered && !F_menuIsCreated && F_menuSubmenu)
  138.     {
  139.         if (document.layers)
  140.             F_menuSubmenu.visibility = 'hidden';
  141.         else
  142.             F_menuSubmenu.style.visibility = 'hidden';
  143.         F_menuSubmenu = 0;
  144.     }
  145. }
  146.  
  147. function F_menu(a)
  148. {
  149.     var navname = a[0];
  150.     var s;
  151.  
  152.     s = '<table onmouseover=F_menumouseover(this) onmouseout=F_menumouseout() border="0" cellspacing="0" cellpadding="0">';
  153.     var i = 1;
  154.     while (i < a.length)
  155.     {
  156.         var link = a[i];
  157.         var target = '';
  158.         var p = link.indexOf(' target=');
  159.         if (p != -1)
  160.         {
  161.             target = link.substr(p + 8);
  162.             link = link.substr(0, p);
  163.         }
  164.         s += '<tr><td width="100%">';
  165.         s += '<a href="' + link + '"';
  166.         if (target.length)
  167.             s += ' target="' + target + '"';
  168.         if (a[i + 2].length)
  169.             s += ' onMouseOver="F_rolls(\'' + navname + 's' + i + '\',1)" onMouseOut="F_rolls(\'' + navname + 's' + i + '\',0)"';
  170.         s += '>';
  171.         s += '<img border="0" src="' + a[i + 1] + '"';
  172.         if (a[i + 2].length)
  173.             s += ' name=\'' + navname + 's' + i + '\' onLoad="F_loadRollover(this,\'' + a[i + 2] + '\',0)"';
  174.         s += '>';
  175.         s += '</a></td></tr>';
  176.         i += 3;
  177.     }
  178.     s += '</table>';
  179.  
  180.     if (F_menuIsGecko)
  181.     {
  182.         document.writeln("<DIV ID='" + navname + "LYR' STYLE='Z-Index:5'>");
  183.         document.writeln(s);
  184.         document.writeln("</DIV>");
  185.     }
  186.     else if (F_menuIsOpera)
  187.     {
  188.         document.writeln("<DIV ID='" + navname + "LYR'>");
  189.         document.writeln(s);
  190.         document.writeln("</DIV>");
  191.     }
  192.     else if (document.all)
  193.     {
  194.         document.writeln("<DIV ID='" + navname + "LYR' STYLE='Z-Index:5'>");
  195.         document.writeln(s);
  196.         document.writeln("</DIV>");
  197.     }
  198.     else if (document.layers)
  199.     {
  200.         document.writeln('<LAYER id="' + navname + 'LYR" visibility=hidden onmouseover="F_menumouseover()" onmouseout="F_menumouseout()"></LAYER>');
  201.         F_menuTable[navname] = s;
  202.     }
  203. }
  204.  
  205. function F_menumouseover()
  206. {
  207.     F_menuIsEntered = true;
  208.     F_menuIsCreated = false;
  209. }
  210.  
  211. function F_menumouseout()
  212. {
  213.     F_menuIsEntered = false;
  214.     setTimeout('F_checkMenuClose()', 100);
  215. }
  216.  
  217. function F_rolls(imageName,over)
  218. {
  219.     if (over)
  220.         F_menumouseover();
  221.     else
  222.         F_menumouseout();
  223.  
  224.     F_roll(imageName,over);
  225. }
  226.